home *** CD-ROM | disk | FTP | other *** search
/ .net 2002 March / DotNetMagazine-Issue107-Coverdisc-NET107-02-03-PCMac.bin / pc / PC Software / free_browsing / DavesQckSearchDbar3-14 / dqsd.exe / searches / qsfind.xml < prev    next >
Text File  |  2002-09-30  |  6KB  |  173 lines

  1. <search function="qsfind">
  2.   <name>Quick Search Find</name>
  3.   <description>
  4.     Get information on built-in Dave's Quick Search functions by searching through their descriptions. Click on the name of the search in the resuling popup to fill the search text box with the function name.<br/>
  5.     <div class="helpboxDescLabels">Example:</div>
  6.     <table class="helpboxDescTable">
  7.       <tr><td>qsfind phone number</td></tr>
  8.     </table>
  9.   </description>
  10.   <category>Functions</category>
  11.   <contributor>Neel Doshi</contributor>
  12.   
  13.   <script><![CDATA[
  14.     function qsfind(q)
  15.     {
  16.       if (q == q.match(/^\s*$/))
  17.       {
  18.         about();
  19.         return false;
  20.       }
  21.       if (nullArgs("qsfind", q))
  22.         return false;
  23.  
  24.       var switch_list = new Array("function");
  25.       var args = parseArgs(q, switch_list);
  26.  
  27.       // Create an array to store the search results.
  28.       var SearchResults = new Array();
  29.       var SearchFound = false;
  30.       if ( typeof args.switch_val["function"] != "undefined")
  31.       {
  32.         if ( typeof searches[args.q] != "undefined" )
  33.         {
  34.           SearchResults[args.q] = searches[args.q];
  35.           SearchFound = true;
  36.         }
  37.       }
  38.       else
  39.       {
  40.         for (var i in searches)
  41.         {
  42.           if (isNaN(i))
  43.           {
  44.             if( (searches[i].desc ? searches[i].desc.toLowerCase().match(args.q) : 0) 
  45.               || searches[i].name.toLowerCase().match(args.q) 
  46.               || (searches[i].link ? searches[i].link.toLowerCase().match(args.q) : 0) )
  47.             {
  48.               SearchResults[i] = searches[i];
  49.               SearchFound = true;
  50.             }
  51.             for (var j = 0; j < searches[i].aliases.length; j++)
  52.             {
  53.               if ( searches[i].aliases[j].toLowerCase().match(args.q) )
  54.               {
  55.                 SearchResults[i] = searches[i];
  56.                 SearchFound = true;
  57.                 break;
  58.               }
  59.             }
  60.           }
  61.         }
  62.       }
  63.  
  64.       //  Define the popup's final width
  65.       var windowW = 350;
  66.       var QSFPopup = window.createPopup();
  67.       var QSFPopupBody = QSFPopup.document.body;
  68.  
  69.       var QFSBodyCode = "<table id=qstable border=0 cellspacing=1 cellpadding=2 width=100% height=100%>";
  70.       QFSBodyCode += "<tr><td valign=top><style>" + convertStylesToInline() + "</style>";
  71.  
  72.       if (SearchFound)
  73.       {
  74.         //  Loop through the results to build the table in the popup
  75.         for (var i in SearchResults)
  76.         {
  77.           var search = SearchResults[i];
  78.  
  79.           var rowclass = (search.local ? 'class=localSearch' : '' );
  80.           if (!search.enabled)
  81.             rowclass = 'class=disabledSearch';
  82.  
  83.           QFSBodyCode += "<tr " + rowclass + "><td class=helpboxCommands>";
  84.           for (var j = 0; search.aliasmenudisplay && (j < search.aliases.length); j++)
  85.           {
  86.             var alias = search.aliases[j].replace(/&/g, "&").replace(/</g, "<");
  87.             if (isInternalSearch(alias))
  88.               continue;
  89.             if (alias == "" || alias == " ")
  90.             {
  91.               var default_alias_text = "<em>Enter</em>";
  92.               alias = default_alias_text;
  93.             }
  94.  
  95.             if (!search.enabled)
  96.             {
  97.               QFSBodyCode += "<a class=helpboxCommandLink>";
  98.             }
  99.             else
  100.             {
  101.               if (j > 0)
  102.               {
  103.                 // because some puctuation causes problems with the javascript
  104.                 // text box population, create an alias link only if there
  105.                 // isn't punctuation in the alias.
  106.                 if (alias != "" && alias != " " && alias.search(/\W/) == -1 )
  107.                   QFSBodyCode += "<a class=helpboxAlias onMouseUp=parent.document.deff.q.value='" + alias + "'>";
  108.                 else
  109.                   QFSBodyCode += "<a class=helpboxAlias>"
  110.               }
  111.               else
  112.               {
  113.                 // Create a link that allows the user to populate the form field with
  114.                 // the function name
  115.                 QFSBodyCode += "<a class=helpboxCommandLink href='' onMouseUp=parent.document.deff.q.value='" + alias + "'>";
  116.               }
  117.             }
  118.  
  119.             QFSBodyCode += alias;
  120.             QFSBodyCode += "</a>";
  121.  
  122.             if (j < search.aliases.length)
  123.               QFSBodyCode += "<br>"
  124.           }
  125.           
  126.           QFSBodyCode += "</td><td valign=top class=helpboxDescriptions>";
  127.           if (search.link)
  128.             QFSBodyCode += "<a class=helpboxLink href='' onMouseUp=parent.openSearchWindow('" + search.link + "');>" + search.name + "</a>";
  129.           else
  130.             QFSBodyCode += "<a class=helpboxSearchName>" + search.name + "</a>";
  131.           if (search.desc)
  132.           {
  133.             // If the search author put a nobr tag in the description, remove it to avoid
  134.             // breaking the table width.
  135.             QFSBodyCode += " - " + search.desc.replace("nobr>", "a>");
  136.           }
  137.           QFSBodyCode += "</td></tr>";
  138.         }
  139.       }
  140.       else
  141.       {
  142.         QFSBodyCode += "<tr><td valign=top style='text-align: center' class=helpboxDescriptions>No searches match your search criteria - <b>" + q + "</b>";
  143.       }
  144.  
  145.       QFSBodyCode += "</table>";
  146.       QSFPopupBody.innerHTML = QFSBodyCode;
  147.  
  148.       QSFPopup.document.body.style.border="outset 2px";
  149.       QSFPopup.document.body.style.background='menu';
  150.       QSFPopup.document.body.style.overflowY='auto';
  151.  
  152.       // Temporatily show the popup to determine the proper final
  153.       // height for the popup.
  154.       QSFPopup.show(0, 0, windowW, 0);
  155.       var windowH = QSFPopupBody.scrollHeight + 6;
  156.       QSFPopup.hide();
  157.  
  158.       // Put a cap on the popup height
  159.       windowH = windowH > window.screen.height-100 ? window.screen.height-100 : windowH;
  160.  
  161.       //QSFPopup.show(20, -20-windowH, windowW, windowH, document.body);
  162.       QSFPopup.show((buttonalign == "left" ? 0 : document.body.clientWidth - windowW), -windowH, windowW, windowH, document.body);
  163.  
  164.       return true;
  165.     }
  166.   ]]></script>
  167.  
  168.   <copyright>
  169.     Copyright (c) 2002 David Bau
  170.     Distributed under the terms of the
  171.     GNU Public License, Version 2 (http://www.gnu.org/copyleft/gpl.txt)
  172.   </copyright>
  173. </search>